package com.hengpeng.common.scheduling.quartz;

import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.quartz.SchedulerException;
import org.quartz.SchedulerListener;
import org.quartz.Trigger;

/**
 * <pre>
 * 定时作业框架的监听事件
 * </pre>
 * @author chenhui
 * @version 1.0, 2013-1-5
 */
public class QuartzSchedulerListener implements SchedulerListener
{
	private static final Log logger = LogFactory.getLog(QuartzSchedulerListener.class);

	/**
	 * 当一个JobDetail被scheduler的时候执行
	 */
	public void jobScheduled(Trigger arg0)
	{
	}

	/**
	 * 当一个JobDetail被排除在scheduler之外的时候执行
	 */
	public void jobUnscheduled(String triggerName, String triggerGroup)
	{
		logger.error("当前任务已经被排除在执行任务中，以后可能不会执行:" + triggerName);
	}

	/**
	 * 当Trigger被暂停的时候执行
	 */
	public void jobsPaused(String triggerName, String triggerGroup)
	{
		logger.error("定时作业任务Trigger被暂停的时候:" + triggerName + " ," + triggerGroup);
	}

	/**
	 * 当Trigger被解除暂停的时候执行
	 */
	public void jobsResumed(String triggerName, String triggerGroup)
	{
		logger.info("定时作业Trigger重新执行启动:" + triggerName + " ," + triggerGroup);
	}

	/**
	 * 当scheduler发生严重错误的时候执行
	 */
	public void schedulerError(String msg, SchedulerException cause)
	{
		logger.error("定时作业框架出错,具体消息为:" + msg + "," + cause.getMessage());
	}

	/**
	 * 当scheduler被关闭的时候执行
	 */
	public void schedulerShutdown()
	{
	}

	/**
	 * 调用scheduler，当trigger到达一定条件的时候,scheduler就永远不会再fire
	 */
	public void triggerFinalized(Trigger trigger)
	{
		logger.error("当前的trigger被永远不会执行:" + trigger.getName());
	}

	/**
	 * 当trigger或trigger所在的组被暂停的时候执行
	 */
	public void triggersPaused(String triggerName, String triggerGroup)
	{
		logger.error("定时作业trigger或trigger所在的组被暂停执行:" + triggerName + "," + triggerGroup);
	}

	/**
	 * 当trigger被解除暂停的时候被执行
	 */
	public void triggersResumed(String triggerName, String triggerGroup)
	{
		logger.info("定时作业trigger被解除暂停:" + triggerName + "," + triggerGroup);
	}
}
